# 回合制对战游戏
#
# • 创建角色：名字、性别、血量、装备、归属房间（行为是战斗）
#
#  • 创建房间： （房间名字，成员）
#
# • 角色可加入房间（行为）
#
#  • 房间内的人可互打
#
#  • 房间上限2人
#
# • 战斗
#
# • 装备-防弹衣
#
# • 血量默认100
#
#  • 正常被攻击-10滴血
#
#  • 有防弹衣-5滴血
#
# 具体做什么由主程序去做
import copy


class persona():
    # 创建角色：名字、性别、血量、装备、归属房间（行为是战斗）
    characteristics={'name':'','sex':'','boold':100,'money':0,'materiel':0,'VIP':0}
    def __init__(self,name,sex,boold):
        self.characteristics['name']=name
        self.characteristics['sex']=sex
        self.characteristics['boold']=boold

    def pay_money(self,money):
        self.characteristics['money']+=money

    def quipe(self,materiel):
        self.characteristics['materiel'] = materiel
    def mate(self,box_code):
        self.characteristics['box'] = box_code
    def VIP(self,V):
        self.characteristics['VIP']=V

class room():
    room_code={}
    def __init__(self,code):
        self.room_code[code]=0
        if (self.room_code.get(code,0)+1)<=2:
            self.room_code[code]+=1
        else:
            print("该房间已经有两人，请重新匹配")


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False
import random
print("欢迎来到JOJO的世界")
action_room={}
number=0
room_number=1
jue={}
persona_lis={}
while True:
    sel=input("请输入您的选择：1，创建角色，2.退出,请输入：")
    if sel=="1":
        print("尊敬的新用户现在开始创建您角色")
        name=input("请输入您的用户名：")
        sex=input("请输入您的性别：")
        print("角色创建成功")
        print(f"您的用户名是：{name},您的性别为：{sex},您的初始血量为100点，装备无")
        number += 1
        persona_lis[number]=persona(name,sex,100)
        while True:
            print("请继续您的选择：\n1.充值\n2.购买会员(会员可以加伤害哟)\n3.购买装备(可以抵挡伤害哦)\n4.直接开始游戏-匹配\n5.退出")
            sel_1=input("您的选择是：")
            if sel_1=="1":
                while True:
                    money=input("你好有钱人！！\n请输入您要充值的金额：")
                    if is_number(money):
                        money=int(money)
                        persona_lis[number].pay_money(money)
                        print(f"尊敬的有钱人:{name},您现在的黑卡内的金额为：{persona_lis[number].characteristics['money']}")
                        break
                    else:
                        print("有钱人,请你正确输入")
            elif sel_1=="2":
                sure=input("购买会员需要30元哟\n有钱人\nAre you sure(sure/no):")
                if sure=="sure":
                    if persona_lis[number].characteristics['money']>=30:
                        persona_lis[number].VIP(10)
                        persona_lis[number].characteristics['money']-=30
                        persona_lis[number].characteristics['称号'] = 'JOJO我已经不当人了,JOJO'
                        print(f"有钱人你已经成为尊贵的会员\n攻击力加10\n获得称号“{persona_lis[number].characteristics['称号']}”")
                    else:
                        print("您的余额不足，请先充值")
                elif sure=="no":
                    persona_lis[number].VIP(0)
                    continue
                else:
                    print("请您正确输入")
            elif sel_1=="3":
                buy_q=input("我们有一件盔甲，只需要50元\n购买后可以增加五点防御\n有钱人快买吧（yes/no）：")
                if buy_q=="yes":
                    persona_lis[number].quipe(5)
                    print(f"我已经无敌了\n您获得盔甲一件，增加防御力：{persona_lis[number].characteristics['materiel']}")
                    print("但不可以重复购买哟，亲，不然其他玩家没有体验感哟")
                elif buy_q=="no":
                    persona_lis[number].quipe(0)
                else:
                    print("请正确输入")
                    continue
            elif sel_1=="4":
                jue[number]=copy.deepcopy(persona_lis[number].characteristics)
                action_room[room_number] = room(number)
                if number%2==0:
                    print("开始战斗，JOJO你准备好了吗？")
                    print("现在开始确定先手")
                    second_number=number-1
                    offensive=random.randint(second_number,number)
                    i=1
                    while jue[number]['boold'] and jue[second_number]['boold']:
                        print(f"第{i}回合开始")
                        print(f"先手是{offensive}")
                        if offensive==number:
                            jue[second_number]['boold']=jue[second_number]['boold']-(jue[number]['VIP']+10)+jue[second_number]['materiel']
                            print(f"{jue[second_number]['name']}受到{jue[number]['VIP']+10}点伤害，抵挡了{jue[second_number]['materiel']}点伤害\n剩余血量{jue[second_number]['boold']}")
                            offensive=second_number
                            i += 1
                        elif offensive==second_number:
                            jue[number]['boold'] = jue[number]['boold'] - (jue[second_number]['VIP'] + 10) + jue[number]['materiel']
                            print(f"{jue[number]['name']}受到{jue[second_number]['VIP'] + 10}点伤害，抵挡了{jue[number]['materiel']}点伤害\n剩余血量{jue[number]['boold']}")
                            offensive=number
                            i += 1
                    if jue[number]['boold']==0:
                        print(f"恭喜{jue[number-1]['name']}获得胜利")
                    else:
                        print(f"恭喜{jue[second_number]['name']}获得胜利")
                    action_room[room_number] = room(number)
                    room_number+=1
                elif number%2:
                    action_room[room_number] = room(number)
                    print("房间只有一个人，需再创建一个角色")
                    break
            elif sel_1=="5":
                break
            else:
                print("请正确输入")
    elif sel=="3":
        break
    else:
        print("请正确输入")

